package pe.gob.foncodes.ssa.bs.seguridad.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author planvital
 */
@Entity
@Table(name = "UNIDAD_ORGANIZACIONAL", catalog = "", schema = "GEN")
@NamedQueries({
    @NamedQuery(name = "UnidadOrganizacional.findAll", query = "SELECT u FROM UnidadOrganizacional u"),
    @NamedQuery(name = "UnidadOrganizacional.findByCodUnidad", query = "SELECT u FROM UnidadOrganizacional u WHERE u.codUnidad = :codUnidad"),
    @NamedQuery(name = "UnidadOrganizacional.findByFlgZonal", query = "SELECT u FROM UnidadOrganizacional u WHERE u.flgZonal = :flgZonal"),
    @NamedQuery(name = "UnidadOrganizacional.findByTxtUT", query = "SELECT u FROM UnidadOrganizacional u WHERE u.flgActivo='1' AND u.flgEstructura ='1' AND u.flgZonal='1' AND u.tipNivel='1' AND u.txtUnidad LIKE ?1"),
    @NamedQuery(name = "UnidadOrganizacional.findByTxtUO", query = "SELECT u FROM UnidadOrganizacional u WHERE u.flgActivo='1' AND u.flgEstructura ='1' AND u.flgZonal='0' AND u.tipNivel IN ('1','2') AND u.txtUnidad LIKE ?1 ORDER BY u.txtUnidad"),
    @NamedQuery(name = "UnidadOrganizacional.findByCodZonal", query = "SELECT u FROM UnidadOrganizacional u WHERE u.flgActivo='1' AND u.flgEstructura ='1' AND u.flgZonal='0' AND u.tipNivel IN ('1','2') AND u.codZonal = ?1 ORDER BY u.txtUnidad"),    
    @NamedQuery(name = "UnidadOrganizacional.findByFlgActivo", query = "SELECT u FROM UnidadOrganizacional u WHERE u.flgActivo = ?1 ORDER BY u.txtUnidad")
})
public class UnidadOrganizacional implements Serializable {
    private static final long serialVersionUID = 1L;
    private String codUnidad;
    private String txtUnidad;
    private String txtUnidadCorta;
    private String txtSigla;
    private String txtSiglaDocumento;
    private String txtTelefono;
    private String txtFax;
    private String flgEstructura;
    private String flgZonal;
    private String flgActivo;
    private Date fecInicio;
    private Date fecBaja;
    private String tipNivel;
    private Character tipOrgano;
    private String codCentroCosto;
    private String codUbicFoncodes;
    private Long nidRepresentante;
    private String codZonal;
    private Short numLongNivel;
    private List<Personal> personalList;
    private List<Personal> personalList1;

    public UnidadOrganizacional() {
    }

    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 10)
    @Column(name = "COD_UNIDAD", nullable = false, length = 10)
    public String getCodUnidad() {
        return codUnidad;
    }

    public void setCodUnidad(String codUnidad) {
        this.codUnidad = codUnidad;
    }

    @Basic(optional = false)
    @NotNull
    @Column(name = "TXT_UNIDAD", nullable = false, length = 80)
    public String getTxtUnidad() {
        return txtUnidad;
    }

    public void setTxtUnidad(String txtUnidad) {
        this.txtUnidad = txtUnidad;
    }

    @Column(name = "TXT_UNIDAD_CORTA", length = 30)
    public String getTxtUnidadCorta() {
        return txtUnidadCorta;
    }

    public void setTxtUnidadCorta(String txtUnidadCorta) {
        this.txtUnidadCorta = txtUnidadCorta;
    }

    @Column(name = "TXT_SIGLA", length = 20)
    public String getTxtSigla() {
        return txtSigla;
    }

    public void setTxtSigla(String txtSigla) {
        this.txtSigla = txtSigla;
    }

    @Column(name = "TXT_SIGLA_DOCUMENTO", length = 20)
    public String getTxtSiglaDocumento() {
        return txtSiglaDocumento;
    }

    public void setTxtSiglaDocumento(String txtSiglaDocumento) {
        this.txtSiglaDocumento = txtSiglaDocumento;
    }

    @Column(name = "TXT_TELEFONO", length = 50)
    public String getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    @Column(name = "TXT_FAX", length = 20)
    public String getTxtFax() {
        return txtFax;
    }

    public void setTxtFax(String txtFax) {
        this.txtFax = txtFax;
    }

    @Basic(optional = false)
    @NotNull
    @Column(name = "FLG_ESTRUCTURA", nullable = false)
    public String getFlgEstructura() {
        return flgEstructura;
    }

    public void setFlgEstructura(String flgEstructura) {
        this.flgEstructura = flgEstructura;
    }

    @Column(name = "FLG_ZONAL")
    public String getFlgZonal() {
        return flgZonal;
    }

    public void setFlgZonal(String flgZonal) {
        this.flgZonal = flgZonal;
    }

    @Column(name = "FLG_ACTIVO")
    public String getFlgActivo() {
        return flgActivo;
    }

    public void setFlgActivo(String flgActivo) {
        this.flgActivo = flgActivo;
    }

    @Column(name = "FEC_INICIO")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getFecInicio() {
        return fecInicio;
    }

    public void setFecInicio(Date fecInicio) {
        this.fecInicio = fecInicio;
    }

    @Column(name = "FEC_BAJA")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getFecBaja() {
        return fecBaja;
    }

    public void setFecBaja(Date fecBaja) {
        this.fecBaja = fecBaja;
    }

    @Column(name = "TIP_NIVEL")
    public String getTipNivel() {
        return tipNivel;
    }

    public void setTipNivel(String tipNivel) {
        this.tipNivel = tipNivel;
    }

    @Column(name = "TIP_ORGANO")
    public Character getTipOrgano() {
        return tipOrgano;
    }

    public void setTipOrgano(Character tipOrgano) {
        this.tipOrgano = tipOrgano;
    }

    @Column(name = "COD_CENTRO_COSTO", length = 6)
    public String getCodCentroCosto() {
        return codCentroCosto;
    }

    public void setCodCentroCosto(String codCentroCosto) {
        this.codCentroCosto = codCentroCosto;
    }

    @Column(name = "COD_UBIC_FONCODES", length = 2)
    public String getCodUbicFoncodes() {
        return codUbicFoncodes;
    }

    public void setCodUbicFoncodes(String codUbicFoncodes) {
        this.codUbicFoncodes = codUbicFoncodes;
    }

    @Column(name = "NID_REPRESENTANTE")
    public Long getNidRepresentante() {
        return nidRepresentante;
    }

    public void setNidRepresentante(Long nidRepresentante) {
        this.nidRepresentante = nidRepresentante;
    }

    @Column(name = "NUM_LONG_NIVEL")
    public Short getNumLongNivel() {
        return numLongNivel;
    }

    public void setNumLongNivel(Short numLongNivel) {
        this.numLongNivel = numLongNivel;
    }

    @Size(min = 1, max = 2)
    @Column(name = "COD_ZONAL", nullable = false, length = 2)
    public String getCodZonal() {
        return codZonal;
    }

    public void setCodZonal(String codZonal) {
        this.codZonal = codZonal;
    }   
    
    @OneToMany(mappedBy = "codUnidadRegistro")
    public List<Personal> getPersonalList() {
        return personalList;
    }

    public void setPersonalList(List<Personal> personalList) {
        this.personalList = personalList;
    }

    @OneToMany(mappedBy = "codUnidad")
    public List<Personal> getPersonalList1() {
        return personalList1;
    }

    public void setPersonalList1(List<Personal> personalList1) {
        this.personalList1 = personalList1;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codUnidad != null ? codUnidad.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof UnidadOrganizacional)) {
            return false;
        }
        UnidadOrganizacional other = (UnidadOrganizacional) object;
        if ((this.codUnidad == null && other.codUnidad != null) || (this.codUnidad != null && !this.codUnidad.equals(other.codUnidad))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.gob.foncodes.ssa.bs.seguridad.domain.UnidadOrganizacional[ codUnidad=" + codUnidad + " ]";
    }
    
}

